﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeTop.复习九月份
{
    public class Solution560
    {
        public int SubarraySum(int[] nums, int k)//这个数组是有负数的
        {
            int len = nums.Length;

            int pre = 0;
            Dictionary<int, int> map = new Dictionary<int, int>();
            map.Add(0, 1); int res = 0;
            for (int i = 0; i < len; i++)
            {
                pre = pre + nums[i];

                if (map.ContainsKey(pre - k))
                {
                    res += map[pre - k];//结尾i一样，但是起点start不一样,前缀和也可以相等，因为有负数
                }
                if (!map.ContainsKey(pre))//从第一个开始
                {
                    map[pre] = 1;
                }
                else
                {
                    map[pre]++;
                }
            }

            return res;
        }
    }
}